import { VideoService } from '@/lib/video/video-service';
import { NextRequest, NextResponse } from 'next/server';

/**
 * GET /api/videos - 获取视频列表
 * 支持以下查询参数：
 * - type: 分类ID
 * - page: 页码
 * - year: 年份（逗号分隔的多个值）
 * - area: 地区（逗号分隔的多个值）
 * - sort: 排序方式（newest, hot, rating）
 * - subtypes: 二级分类ID列表（逗号分隔的多个值）
 */
export async function GET(request: NextRequest) {
  try {
    // 解析URL查询参数
    const { searchParams } = new URL(request.url);
    console.log('[API] 收到请求参数:', Object.fromEntries(searchParams.entries()));
    
    // 获取必要参数
    const typeIdStr = searchParams.get('type');
    
    const typeId = typeIdStr ? (typeIdStr === 'top-rated' ? 0 : parseInt(typeIdStr)) : 0;
    const page = parseInt(searchParams.get('page') || '1');
    
    console.log('[API] 解析参数:', { typeId, page });
    
    // 如果没有分类ID，返回错误
    if (typeId === undefined) {
      console.error('[API] 缺少分类ID参数');
      return NextResponse.json({ error: '缺少分类ID参数' }, { status: 400 });
    }
    
    // 解析筛选参数
    const yearParam = searchParams.get('year');
    const areaParam = searchParams.get('area');
    const sort = searchParams.get('sort') as 'newest' | 'hot' | 'rating' || 'newest';
    
    // 解析二级分类参数
    const subtypesParam = searchParams.get('subtypes');
    
    // 处理多选参数 - 支持逗号分隔的格式
    const years = yearParam ? yearParam.split(',') : [];
    const areas = areaParam ? areaParam.split(',') : [];
    const subtypes = subtypesParam ? subtypesParam.split(',').map(id => parseInt(id, 10)) : [];
    
    console.log('[API] 筛选参数:', { years, areas, sort, subtypes });
    
    // 每页显示的数量固定为24个
    const pageSize = 24;
    
    // 调用视频服务获取数据
    const { videos, total } = await VideoService.getVideosByType(
      typeId, 
      page, 
      pageSize, 
      {
        years,
        areas,
        sort,
        types: subtypes // 将二级分类传递给服务层
      }
    );
    
    // 计算总页数
    const totalPages = Math.ceil(total / pageSize);
    const hasMore = page < totalPages;
    
    // 返回结果
    return NextResponse.json({ 
      videos, 
      total, 
      currentPage: page, 
      totalPages,
      hasMore
    });
  } catch (error) {
    console.error('[API] 服务器错误:', error);
    return NextResponse.json({ error: '服务器内部错误', details: (error as Error).message }, { status: 500 });
  }
} 